package design_pattern.SingleThreadExecute;

/**
 * @Author: 蔡翔
 * @Date: 2019/11/3 7:25
 * @Version 1.0
 */
public class Client {
    public static void main(String[] args) {
        Gate gate = new Gate();
        User bj = new User("BaoBao","Beijing",gate);
        User hz = new User("HaoHao","Hangzhou",gate);
        User gz = new User("Guangzhou","Guangzhou",gate);
        bj.start();
        hz.start();
        gz.start();

        //跑上面程序出现结果： *********BROKE********No.101320:BaoBao,Beijing
        //出现这样的问题原因：多个线程去竞争一个资源肯定 会出现问题（又有读操作 又有写操作）
        //解决方案：1.在pass()方法上加  synchronize锁。（这种方法不是最优解，因为运行效率会比较低）
        // 2. 读写锁 分离，读是不会出现问题的，只要把写串行化就可以了。
    }
}
